package jastgen.generator;

import jastgen.nodes.ClassDef;
import jastgen.nodes.Module;
import jastgen.nodes.Type;

import java.util.HashMap;
import java.util.Map;

class ClassToInterface {

	private final Map<String, String> m;

	ClassToInterface(final Module root) {
		m = classToInterface(root);
	}

	// インターフェースを持つクラスからインターフェースへのマップを作る
	private static Map<String, String> classToInterface(
			final Module node)
	{
		final Map<String, String> m = new HashMap<String, String>();
		for(final ClassDef c : node.getClassDefs()) {
			if(c.hasInterface())
				m.put(c.getBaseName(), c.getInterfaceBaseName());
		}
		return m;
	}

	String getInterfaceOrClassName(final Type ty) {
		final String t = ty.toString();
		if(m.containsKey(t))
			return m.get(t);
		return t;
	}

	boolean hasInterface(final Type ty) {
		return m.containsKey(ty.toString());
	}
}
